package liecai_class.day06;

import java.util.concurrent.CyclicBarrier;

/**
 * 栅栏 CyclicBarrier
 */
public class Demo06 {
    private static CyclicBarrier cb = new CyclicBarrier(3);
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(2000);
                    System.out.println("亚瑟加载游戏完成..");
                    cb.await();//此方法会进入阻塞状态，直到栅栏上等待的线程达到指定数量，阻塞才会放开
                    System.out.println("亚瑟开始游戏!");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(3000);
                    System.out.println("安其拉加载游戏完成..");
                    cb.await();//此方法会进入阻塞状态，直到栅栏上等待的线程达到指定数量，阻塞才会放开
                    System.out.println("安其拉开始游戏!");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(5000);
                    System.out.println("花木兰加载游戏完成..");
                    cb.await();//此方法会进入阻塞状态，直到栅栏上等待的线程达到指定数量，阻塞才会放开
                    System.out.println("花木兰开始游戏!");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}
